package com.quanyan.user.service;

import com.quanyan.api.APIResponse;
import com.quanyan.common.Plugin.PageObj;
import com.quanyan.user.model.db.TbLevel;
import com.quanyan.user.model.db.TbUser;
import com.quanyan.user.model.db.TbUserExt;
import com.quanyan.user.model.vo.request.ReqQueryUserInfo;
import com.quanyan.user.model.vo.request.ReqUserSetting;
import com.quanyan.user.model.vo.response.QueryUserDetail;
import com.quanyan.user.model.vo.response.QueryUserInfo;
import com.quanyan.user.model.vo.response.RespUserSetting;
import com.quanyan.user.request.ReqAppUserLogin;
import com.quanyan.user.request.ReqBackstageUser;
import com.quanyan.user.request.ReqUserParam;
import com.quanyan.user.response.RespUserInfoBase;

import java.util.List;
import java.util.Map;

/**
 * Created by Administrator on 2016/6/12.
 * 用户信息
 */
public interface UserInfoService {
    /**
     * 查询用户基本信心
     * @param userId 用户id
     * @return
     */
    APIResponse<RespUserInfoBase>  queryUserInfo(Integer userId);

    /**
     * 查询用户基本信心
     * @param phone 手机号
     * @return
     */
    APIResponse<RespUserInfoBase>  queryUserInfo(String phone);


    /**
     * 查询用户信息
     * @param token
     * @return
     */
    APIResponse<RespUserInfoBase> queryUserInfoByToken(String token);


    /**
     * 查询用户信息
     * @param wxOpenId 微信
     * @return
     */
    APIResponse<RespUserInfoBase> queryUserInfoByWxOpenId(String wxOpenId);


    /**
     * 修改用户基础信息
     * @param reqUserParam
     * @return
     */
    APIResponse updateUserInfo(ReqUserParam reqUserParam);


    /**
     * 批量查询用户信息
     * @param lstUserId
     * @return
     */
    APIResponse<List<RespUserInfoBase>> batchQueryUserInfo(List<Integer> lstUserId);


    /**
     * 登录
     * @param reqAppUserLogin
     * @return
     */
    APIResponse<RespUserInfoBase> appLogin(ReqAppUserLogin reqAppUserLogin);


    /**
     * true已绑定 false未绑定
     * @param uid
     * @return
     */
    Boolean isBindingMobile(Integer uid);


    /**
     * 获取用户设置
     * @param userId
     * @return
     */
    RespUserSetting getUserSetting(Integer userId);


    /**
     * 更改用户设置
     * @param userId
     * @param reqUserSetting
     */
    void updateUserSetting(Integer userId, ReqUserSetting reqUserSetting);

    /**
     * 通过uid获取用户信息
     * @param userId
     * @return
     */
    TbUser getUser(Integer userId);

    /**
     * 通过手机号获取用户信息
     * @param phone
     * @return
     */
    TbUser getUser(String phone);


    /**
     * 根据token(c++)获取用户ID
     * @param token
     * @return
     */
    Integer getUserIdByToken(String token);


    /**
     * 批量查询用户信息
     * @param lstUserId
     * @return
     */
    Map<Integer,RespUserInfoBase> batchQueryUserInfoToMap(List<Integer> lstUserId);

    /**
     * 获取用户二维码
     * @param uid
     * @return
     */
    String getUserQRCode(Integer uid);


    /**
     * 根据名称获取uid
     * @param nickName
     * @return
     */
    List<Integer> queryUidByNickName(String nickName);


    /**
     * 注册会员
     * @param reqBackstageUser
     * @return
     */
    APIResponse registerMemberUser(ReqBackstageUser reqBackstageUser);


    /**
     * 注册用户（俱乐部后台搭）
     * @param mobile
     * @return
     */
    APIResponse registerClubUser(String mobile);

    /**
     *批量注册后台用户
     * @param reqBackstageUsers
     * @return
     */
    APIResponse<Map<String,Integer>> batchRegisterMemberUser(List<ReqBackstageUser> reqBackstageUsers);

}
